class Utils {
    /**
     * 检测当前环境是否支持 ES6 语法
     * @returns {boolean}
     */
    static isES6SyntaxSupported() {
        try {
            // 检测 let、const、箭头函数、模板字符串等语法
            new Function('let x = 1; const y = 2; () => {}; `Hello, ${"world"}!`');
            return true; // 支持 ES6
        } catch (e) {
            return false; // 不支持 ES6
        }
    }

    /**
     * 检测当前环境是否支持 ES6 特性（如 Promise、Map、Set 等）
     * @returns {boolean}
     */
    static isES6FeatureSupported() {
        return (
            typeof Promise !== "undefined" && // 检测 Promise
            typeof Map !== "undefined" &&     // 检测 Map
            typeof Set !== "undefined" &&     // 检测 Set
            typeof Symbol !== "undefined" &&  // 检测 Symbol
            "startsWith" in String.prototype && // 检测字符串方法
            "endsWith" in String.prototype &&
            "includes" in Array.prototype     // 检测数组方法
        );
    }

    /**
     * 检测当前环境是否支持 ES6 模块化语法（import/export）
     * @returns {boolean}
     */
    static isES6ModuleSupported() {
        try {
            new Function('import("")');
            return true; // 支持 ES6 模块
        } catch (e) {
            return false; // 不支持 ES6 模块
        }
    }

    /**
     * 获取当前运行环境（Browser 或 Node.js）
     * @returns {string}
     */
    static getEnvironment() {
        if (typeof window !== "undefined") {
            return "Browser";
        } else if (typeof process !== "undefined" && process.versions && process.versions.node) {
            return "Node.js";
        } else {
            return "Unknown";
        }
    }

    /**
     * 获取浏览器信息（仅适用于浏览器环境）
     * @returns {string}
     */
    static getBrowserInfo() {
        if (this.getEnvironment() === "Browser") {
            return navigator.userAgent;
        } else {
            // 标识不是流量器运行环境
            return "Not a browser environment.";
        }
    }

    /**
     * 获取 Node.js 版本（仅适用于 Node.js 环境）
     * @returns {string}
     */
    static getNodeVersion() {
        if (this.getEnvironment() === "Node.js") {
            return process.versions.node;
        } else {
            return "Not a Node.js environment.";
        }
    }
}

const runTests = true; // 控制开关：true 执行测试，false 不执行测试

const testCase = (function () {
    // 测试 isES6SyntaxSupported
    console.log("ES6 语法支持:", Utils.isES6SyntaxSupported()); // 预期: true（现代浏览器或 Node.js）

    // 测试 isES6FeatureSupported
    console.log("ES6 特性支持:", Utils.isES6FeatureSupported()); // 预期: true（现代浏览器或 Node.js）

    // 测试 isES6ModuleSupported
    console.log("ES6 模块支持:", Utils.isES6ModuleSupported()); // 预期: true（现代浏览器或 Node.js）

    // 测试 getEnvironment
    console.log("当前运行环境:", Utils.getEnvironment()); // 预期: "Browser" 或 "Node.js"

    // 测试 getBrowserInfo
    console.log("浏览器信息:", Utils.getBrowserInfo()); // 预期: 浏览器信息 或 "Not a browser environment."

    // 测试 getNodeVersion
    console.log("Node.js 版本:", Utils.getNodeVersion()); // 预期: Node.js 版本 或 "Not a Node.js environment."
});

// 根据控制开关决定是否执行测试
if (runTests) {
    testCase();
} else {
    console.log("测试未执行，控制开关为 false。");
}

